Data sharing device, data sharing method, and computer program product

ABSTRACT

According to an embodiment, a data sharing device includes a first storage to store first information; a second storage to store second information that is a copy of the first information; a difference generator to compare, when the first information stored in the first storage is changed, the changed first information with the second information, extract a difference therebetween if any, and generate first difference information indicating the difference; a difference transmitter to transmit the first difference information to another data sharing device; a difference receiver to receive second difference information generated in another data sharing device; a difference reflector to reflect a difference indicated by the second difference information in the first information stored in the first storage, and cause the first difference generator not to generate the first difference information when the difference indicated by the second difference information is reflected.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2014-135025, filed on Jun. 30, 2014; the entire contents of which are incorporated herein by reference.

FIELD

Embodiments described herein relate generally to a data sharing device, a data sharing method, and a computer program product.

BACKGROUND

In recent years, there have been proposed data sharing systems in which, when a change is made on a displayed image by an application such as Virtual Network Computing (VNC) at any of multiple information processing devices connected via a network, a difference between images is transferred to the other information processing devices so that images displayed thereon are made to be the same.

In such a system, however, when a change is made on an image displayed on a certain information processing device and difference information of the image is transferred to the other information processing devices, a loop is caused in which displayed images at the other information processing devices are changed according to the received difference information and the other information processing devices thus further transfer difference information of the changes to the certain source information processing device. There is thus a problem that the performances of the information processing devices and the network are degraded owing to occurrence of such a loop of transfer.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating an example of an overall configuration of a data sharing system according to a first embodiment;

FIG. 2 is a diagram illustrating an example of a block configuration of a data sharing device according to the first embodiment;

FIG. 3 is a sequence diagram of operation when a page response is received from a server device;

FIG. 4 is a sequence diagram of operation when a page is changed in a data sharing device;

FIG. 5 is a sequence diagram of operation when page difference information is received from outside;

FIG. 6 is a diagram illustrating an example of a block configuration of a data sharing device according to a modified example;

FIG. 7 is a diagram illustrating an example of an overall configuration of a data sharing system according to a second embodiment;

FIG. 8 is a diagram illustrating an example of a block configuration of a data sharing device according to the second embodiment;

FIG. 9 is a sequence diagram of operation when a screen is changed in a data sharing device; and

FIG. 10 is a sequence diagram of operation when image difference information is received from outside.

DETAILED DESCRIPTION

According to an embodiment, a data sharing device includes a first storage, a second storage, a difference generator, a difference transmitter, a difference receiver, and a difference reflector. The first storage stores first information. The second storage stores second information that is a copy of the first information stored in the first storage. When the first information stored in the first storage is changed, the difference generator compares the changed first information with the second information stored in the second storage. If there is a difference between the changed first information and the second information, the difference generator extracts the difference, and generates first difference information indicating the difference. The difference transmitter transmits the first difference information to another data sharing device. The difference receiver receives second difference information generated in another data sharing device. The difference reflector reflects a difference indicated by the second difference information in the first information stored in the first storage, and causes the first difference generator not to generate the first difference information when the difference indicated by the second difference information is reflected.

Various embodiments will be described in detail below with reference to the drawings. In the drawings mentioned below, parts that are the same are designated by the same reference numerals. Since, however, the drawings are schematic, specific thicknesses and sizes are to be determined in consideration of the following description.

First Embodiment

FIG. 1 is a diagram illustrating an example of an overall configuration of a data sharing system according to a first embodiment. With reference to FIG. 1, the overall configuration of a data sharing system 500 and hardware configurations of data sharing devices 10 and 20 will be described.

As illustrated in FIG. 1, the data sharing system 500 includes a data sharing device 10, a data sharing device 20, and a server device 30. The data sharing device 10, the data sharing device 20, and the server device 30 are connected via a network 1. The network 1 is a network based on a cable communication protocol defined by IEEE (Institute of Electrical and Electronics Engineer) 802.3 or the like, a wireless communication protocol defined by IEEE 802.11, or other protocols, and realized by communication lines such as a local area network (LAN), the Internet, or dedicated lines.

Although two data sharing devices 10 and 20 are illustrated as the data sharing devices connected via the network 1 in FIG. 1, the number of data sharing devices is not limited thereto, and three or more data sharing devices may be connected.

The data sharing device 10 is a device to transmit a page request to the server device 30, receive a page response, and transfer page information contained in the page response to other data sharing devices (the data sharing device 20 in FIG. 1). Note that a page response is response information containing a page requested by the data sharing device 10, and contains header information, and an HTML (HyperText Markup Language) file, a media file, a script, or the like that is a resource of a web page. In addition, page information refers herein to information on a web page written in a markup language such as an XTML file or an XML (Extensible Markup Language) file. The data sharing device 10 includes a communication interface 11, a central processing unit (CPU) 12, a random access memory (RAM) 13, a hard disk drive (HDD) 14, a display device 15, and an input device 16. The above units are connected via a bus in a manner capable of communicating with one another.

The communication interface 11 is an interface based on a protocol such as TCP (Transmission Control Protocol)/IP (Internet Protocol) for communication with the data sharing device 20, the server device 30, etc. via the network 1 such as a LAN. When the communication interface 11 is based on TCP/IP, for example, the communication interface 11 removes headers of TCP and IP from data received from the data sharing device 20 and the server device 30. When the communication interface 11 transmits or receives data to/from the data sharing device 20 and the server device 30, the communication interface 11 also adds or removes TCP and IP headers to/from the data. The communication interface 11 is constituted by a communication unit such as a network interface card (NIC), for example.

The CPU 12 controls overall operation of the data sharing device 10.

The RAM 13 is a device to store various programs including client applications such as a browser executed at the data sharing device 10, data used for various processes carried out at the data sharing device 10, and the like. The client applications are executed by the CPU 12 on an operating system (OS) expanded on the RAM 13.

The HDD 14 is an external storage device to accumulate and store the OS, programs, data, and the like. Note that the HDD 14 is not limited to a HDD that is an external storage device, but may be realized by a storage device such as a solid state drive (SSD), an optical disk, or a magneto-optical disk (MO), for example.

The display device 15 is a device to display various images such as pages received from the server device 30 by a browser or the like. The display device 15 is constituted by a cathode ray tube (CRT) display, a liquid crystal display, a plasma display, an organic electroluminescence (EL) display, or the like, for example.

The input device 16 is a device to which operations are input by a user for causing the CPU 12 to execute predetermined processes. The input device 16 is constituted by operation input functions such as a mouse, a keyboard, a numeric key pad, a touch pad, or a touch panel.

The data sharing device 20 is a device having the same functions as the data sharing device 10. The data sharing device 20 includes a communication interface 21, a CPU 22, a RAM 23, a HDD 24, a display device 25, and an input device 26. The above devices are connected via a bus in a manner capable of communicating with one another. The communication interface 21, the CPU 22, the RAM 23, the HDD 24, the display device 25, and the input device 26 have the same functions as those of the communication interface 11, the CPU 12, the RAM 13, the HDD 14, the display device 15, and the input device 16, respectively, of the data sharing device 10.

The server device 30 is a device that functions as a web server to transmit page responses containing page information such as web pages to the data sharing devices 10 and 20 in response to page requests received from the data sharing devices 10 and 20. The server device 30 includes a communication interface 31, a CPU 32, a RAM 33, and a HDD 34. The above devices are connected via a bus in a manner capable of communicating with one another.

The communication interface 31 is an interface based on a protocol such as TCP/IP for communication with the data sharing devices 10 and 20, and the like via the network 1 such as a LAN. When the communication interface 31 is based on TCP/IP, for example, the communication interface 31 removes headers of TCP and IP from data received from the data sharing devices 10 and 20. When the communication interface 31 transmits or receives data to/from the data sharing devices 10 and 20, the communication interface 31 also adds or removes TCP and IP headers to/from the data. The communication interface 31 is constituted by a communication unit such as a network interface card (NIC), for example.

The CPU 32 controls overall operation of the server device 30.

The RAM 33 is a device to store various programs including server applications executed at the server device 30, data used for various processes carried out at the server device 30, and the like. The server applications are executed by the CPU 32 on an operating system (OS) expanded on the RAM 33.

The HDD 34 is an external storage device to accumulate and store the OS, programs, data, and the like. Note that the HDD 34 is not limited to a HDD that is an external storage device, but may be realized by a storage device such as a SSD, an optical disk, or a magneto-optical disk (MO), for example.

FIG. 2 is a diagram illustrating an example of a block configuration of a data sharing device according to the first embodiment. The block configuration of the data sharing devices 10 and 20 will be described with reference to FIG. 2.

As illustrated in FIG. 2, the data sharing device 10 includes a change generator 101 (change generator), a change reflector 102 (change reflector), a difference receiver 111 (difference receiver), a difference reflector 112 (difference reflector), a difference generator 121 (difference generator), a difference transmitter 122 (difference transmitter), a data storage 131 (first storage), a comparison storage 132 (second storage), a request generator 141, a request transmitter 142, a response receiver 151, a page information extractor 152, a page controller 161, and a display 162.

The change generator 101 is a functional unit to generate page change information (change information) that is information indicating a change made on page information on which a page displayed on the display device 15 is based when the page information is changed by an operation of the input device 16 performed by the user, for example. The change generator 101 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The change reflector 102 is a functional unit to reflect a change indicated by page change information received from the change generator 101 in page information (first information) which is stored in the data storage 131 and on which a page displayed on the display device 15 is based. The change reflector 102 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The difference receiver 111 is a functional unit to receive a packet containing page difference information (second difference information) and header information added thereto from another data sharing device (the data sharing device 20, for example) via the network 1. Note that page difference information is information indicating a difference extracted by comparing two pieces of page information by the difference generator 121 as will be described later. The difference reflector 111 is realized by the communication interface 11 illustrated in FIG. 1.

The difference reflector 112 is a functional unit to initialize information (second information) stored in the comparison storage 132, and reflect a difference indicated by page difference information received from the difference reflector 111 in page information which is stored in the data storage 131 and on which a page displayed on the display device 15 is based. The difference reflector 112 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The difference generator 121 is a functional unit to acquire page information in which a change is reflected from the data storage 131 when reflection of the change in the page information in the data storage 131 by the change reflector 102 is detected or reflection of the difference in the page information in the data storage 131 by the difference reflector 112 is detected, acquire page information (corresponding to initialized information) stored in the comparison storage 132, compare the two pieces of page information, and extract a difference therebetween as page difference information (first difference information). The difference generator 121 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The difference transmitter 122 is a functional unit to transmit a packet containing page difference information received from the difference generator 121 and header information added thereto to another data sharing device (such as the data sharing device 20) via the network 1. The difference transmitter 122 is realized by the communication interface 11 illustrated in FIG. 1.

The data storage 131 is a functional unit to store page information of a web page displayed on the display device 15. The data storage 131 is realized by the RAM 13 illustrated in FIG. 1.

The comparison storage 132 is a functional unit to temporarily store page information stored in the data storage 131 in a state before being changed by page change information from the change reflector 102 or page difference information from the difference reflector 112. The comparison storage 132 is realized by the RAM 13 illustrated in FIG. 1.

The request generator 141 is a functional unit to generate a page request for requesting a web page that the user wants to view. The request generator 141 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The request transmitter 142 is a functional unit to transmit a packet containing a page request and header information added thereto received from the request generator 141 to the server device 30 via the network 1. The request transmitter 142 is realized by the communication interface 11 illustrated in FIG. 1.

The response reflector 151 is a functional unit to receive a packet including a page response containing page information in HTML, XML, or the like and header information added thereto from the server device 30 via the network 1. The response reflector 151 is realized by the communication interface 11 illustrated in FIG. 1.

The page information extractor 152 is a functional unit to extract page information from a page response received from the response reflector 151. The page information extractor 152 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The page controller 161 is a functional unit to convert page information acquired from the data storage 131 into a page in a format that can be displayed by the display 162. The page controller 161 is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

The display 162 is a functional unit to display a page resulting from page conversion by the page controller 161. The display 162 is realized by the display device 15 illustrated in FIG. 1.

Note that the data sharing device 20 has the block configuration illustrated in FIG. 2 similarly to the data sharing device 10.

Furthermore, the change generator 101, the change reflector 102, the difference reflector 112, the difference generator 121, the request generator 141, the page information extractor 152, and the page controller 161 described above may be realized by hardware circuits instead of programs that are software.

Furthermore, the change generator 101, the change reflector 102, the difference reflector 111, the difference reflector 112, the difference generator 121, the difference transmitter 122, the data storage 131, the comparison storage 132, the request generator 141, the request transmitter 142, the response reflector 151, the page information extractor 152, the page controller 161, and the display 162 illustrated in FIG. 2 are conceptual representation of functions and are not limited to such a configuration.

FIG. 3 is a sequence diagram of operation when a page response is received from the server device. With reference to FIG. 3, operation in which the data sharing device 10 transmits a page request to the server device 30 and receives a page response from the server device 30 will be described.

Step S11

The request generator 141 of the data sharing device 10 generates a page request for requesting a web page that the user wants to view, and sends the page request to the request transmitter 142 of the data sharing device 10.

Step S12

The request transmitter 142 transmits a packet including the received page request and header information added thereto to the server device 30 via the network 1.

Step S13

The server device 30 acquires the page requested by the data sharing device 10 from a storage such as the HDD 34 of the server device 30 on the basis for the page request obtained by removing the header information from the received packet. The server device 30 then transmits a packet containing a page response containing the acquired page information in HTML, XML or the like and header information added thereto to the response reflector 151 of the data sharing device 10 via the network 1.

Step S14

The response reflector 151 sends the page response obtained by removing the header information from the received packet to the page information extractor 152 of the data sharing device 10.

Step S15

The page information extractor 152 extracts the page information from the page response, and sends the page information to the data storage 131 of the data sharing device 10.

Step S16

The data storage 131 stores and accumulates the page information.

Step S17

The page controller 161 of the data sharing device 10 acquires the page information stored in the data storage 131.

Step S18

The page controller 161 converts the acquired page information into a page in a format that can be displayed by the display 162.

Step S19

The page controller 161 sends the information (hereinafter simply referred to as a page) resulting from the page conversion to the display 162 of the data sharing device 10.

Step S20

The display 162 displays the received page.

The data sharing device 10 then transfers the page information received by the server device 30 to the data sharing device 20 that is another data sharing device via the network 1. The data sharing device 20 converts the received page information into a page similarly to the data sharing device 10, and displays the page. Note that the data sharing device 20 may acquire page information from the server device 30 instead of the data sharing device 10.

FIG. 4 is a sequence diagram of operation when a page is changed in a data sharing device. With reference to FIG. 4, operation when page information of a web page is changed in the data sharing device 10 will be described.

Step S31

When page information on which a page displayed by the display 162 is based is changed by an operation of the input device 16 performed by the user, for example, the change generator 101 of the data sharing device 10 generates page change information that is information containing the change. Specifically, a change in page information refers to an input of a character on a browser displayed by the display 162, disabling or enabling of a button display, a change in the color or the size of a part displayed on a browser, or a change in metadata attached to a part, for example. The change generator 101 then sends the generated page change information to the change reflector 102 of the data sharing device 10.

Step S32

The change reflector 102 reflects the change indicated by the received page change information in the page information which is stored in the data storage 131 and on which the page displayed by the display 162 is based.

Step S33

The page controller 161 acquires the page information in which the change is reflected from the data storage 131.

Step S34

The page controller 161 converts the acquired page information into a page in a format that can be displayed by the display 162.

Step S35

The page controller 161 sends the page resulting from the page conversion to the display 162.

Step S36

The display 162 displays the received page.

Step S37

When the reflection of the change in the page information in the data storage 131 by the change reflector 102 in step S32 is detected, the difference generator 121 of the data sharing device 10 acquires the page information in which the change is reflected from the data storage 131. In addition to acquiring the page information from the data storage 131, the difference generator 121 also acquires the page information (corresponding to the page information before the reflection of the change in step S32) stored in the comparison storage 132. Note that the reflection of the change in the page information in the data storage 131 performed by the change reflector 102 in step S32 may be detected by a separate functional unit such as a detector and the difference generator 121 may be informed of the detection. In this case, upon receiving the information from the detector, the difference generator 121 may acquire the pieces of page information from the data storage 131 and the comparison storage 132.

Step S38

When the page information acquired from the comparison storage 132 is not initialized information, which will be described later, the difference generator 121 extracts a difference of the page information acquired from the data storage 131 from the page information acquired from the comparison storage 132 as page difference information.

Step S39

The difference generator 121 writes the page information acquired from the data storage 131 over the page information stored in the comparison storage 132.

Step S40

The difference generator 121 sends the extracted page difference information to the difference transmitter 122 of the data sharing device 10.

Step S41

The difference transmitter 122 transmits a packet containing the received page difference information and header information added thereto to another data sharing device (herein, the data sharing device 20) via the network 1.

As in the operation described above, when page information of a web page displayed by the display 162 is changed in the data sharing device 10, a difference from page information before being changed stored in the comparison storage 132 is extracted by the difference generator 121, and page difference information that is information on the difference is transmitted to another data sharing device (herein, the data sharing device 20). The data sharing device 20 in receipt of the page difference information reflects the difference indicated by the page difference information in the page information of the web page displayed by the display 162 of the data sharing device 20 and causes the display 162 to display a page based on the page information in which the difference is reflected according to the operation described later with reference to FIG. 5. As a result, the data sharing device 10 and the data sharing device 20 share the same page information, and can thus make the pages (web pages) displayed thereon to be the same.

FIG. 5 is a sequence diagram of operation when page difference information is received from outside. With reference to FIG. 5, operation when the data sharing device 10 receives page difference information from outside (the data sharing device 20) will be described.

Step S51

The difference reflector 111 of the data sharing device 10 receives a packet containing page difference information from another data sharing device (the data sharing device 20, for example) via the network 1. Note that the difference contained in the page difference information refers to an input of a character on a browser displayed by the display 162, disabling or enabling of a button display, a change in the color or the size of a part displayed on a browser, or a change in metadata attached to apart, for example, similarly to the change in page information described above.

Step S52

The difference reflector 111 sends the page difference information obtained by removing header information from the received packet to the difference reflector 112 of the data sharing device 10.

Step S53

The difference reflector 112 initializes information stored in the comparison storage 132. The difference reflector 112 may perform the initialization by deleting page information stored in the comparison storage 132 or may perform the initialization by overwriting predetermined initialization information, for example. Hereinafter, the information in the comparison storage 132 resulting from the initialization by the difference reflector 112 will be referred to as initialized information.

Step S54

The difference reflector 112 reflects the difference indicated by the received page difference information in the page information which is stored in the data storage 131 and on which the page displayed by the display 162 is based.

Step S55

The page controller 161 acquires the page information in which the difference is reflected from the data storage 131.

Step S56

The page controller 161 converts the acquired page information into a page in a format that can be displayed by the display 162.

Step S57

The page controller 161 sends the page resulting from the page conversion to the display 162.

Step S58

The display 162 displays the received page.

Step S59

When the reflection of the difference in the page information in the data storage 131 by the difference reflector 112 in step S54 is detected, the difference generator 121 acquires the page information in which the difference is reflected from the data storage 131. In addition to acquiring the page information from the data storage 131, the difference generator 121 also acquires the page information (corresponding to the initialized information) stored in the comparison storage 132. Note that the reflection of the difference in the page information in the data storage 131 performed by the difference reflector 112 in step S54 may be detected by a separate functional unit such as a detector and the difference generator 121 may be informed of the detection. In this case, upon receiving the information from the detector, the difference generator 121 may acquire the pieces of page information from the data storage 131 and the comparison storage 132.

Step S60

Since the page information acquired from the comparison storage 132 is initialized information, the difference generator 121 determines that there is no difference in the page information acquired from the data storage 131. The difference generator 121 thus does not generate page difference information from the pieces of page information acquired from the data storage 131 and the comparison storage 132.

Step S61

The difference generator 121 writes the page information acquired from the data storage 131 over the initialized information stored in the comparison storage 132.

As in the operation described above, when the data sharing device 10 has received page difference information from outside (another data sharing device), the difference reflector 112 initializes the comparison storage 132 and reflects the difference indicated by the page difference information in the page information of the web page displayed by the display 162, and displays a page based on the page information in which the difference is reflected on the display 162. Furthermore, when the comparison storage 132 is initialized, the difference generator 121 determines that there is no difference in the page information acquired from the data storage 131, does not generate page difference information, and does not transmit page difference information to outside (another data sharing device). Specifically, since another data sharing device that has transmitted page difference information to the data sharing device 10 can be determined to already display the page based on the page information in which the difference indicated by the page difference information is reflected, the data sharing device 10 does not newly transmit the page difference information with the same content to the another data sharing device. As a result, occurrence of a loop in which the page difference information is transferred to the source data sharing device can be suppressed, and degradation in the performances of the data sharing devices 10 and 20 and the network 1 can be suppressed.

Modified Example of First Embodiment

FIG. 6 is a diagram illustrating an example of a block configuration of a data sharing device according to a modified example of the first embodiment. With reference to FIG. 6, configurations and operation of data sharing devices 10 a and 20 a according to the present modified example will be described mainly on the configurations and the operation different from the data sharing devices 10 and 20 according to the first embodiment. The data sharing devices 10 a and 20 a have the same hardware configurations as those of the data sharing devices 10 and 20, respectively, illustrated in FIG. 1.

As illustrated in FIG. 6, the block configuration of the data sharing device 10 a is a configuration corresponding to the block configuration of the data sharing device 10 illustrated in FIG. 2 but the difference reflector 112 therein is replaced by a difference reflector 112 a (difference reflector). The difference reflector 112 a is a functional unit to reflect a difference indicated by page difference information received from the difference reflector 111 in page information which is stored in the data storage 131 and on which a page displayed by the display device 15 is based. Furthermore, the difference reflector 112 a also reflects the difference indicated by the page difference information received from the difference reflector 111 in page information stored in the comparison storage 132 in addition to the page information stored in the data storage 131. The difference reflector 112 a is implemented by a program executed by the CPU 12 illustrated in FIG. 1.

Note that the data sharing device 20 a also has the block configuration illustrated in FIG. 6 similarly to the data sharing device 10 a.

Next, operation when page difference information is received from outside (the data sharing device 20 a) of the data sharing device 10 a will be described mainly on the difference from the operation of the data sharing device 10 illustrated in FIG. 5. Note that steps S51, S52, and S54 to S58 are the same as those in the operation of the data sharing device 10 according to the first embodiment.

Step S53

The difference reflector 112 a reflects a difference indicated by the received page difference information in the page information stored in the comparison storage 132.

Step S59

When the reflection of the difference in the page information in the data storage 131 by the difference reflector 112 in step S54 is detected, the difference generator 121 acquires the page information in which the difference is reflected from the data storage 131. In addition to acquiring the page information from the data storage 131, the difference generator 121 also acquires the page information in which the difference is reflected stored in the comparison storage 132. Note that the reflection of the difference in the page information in the data storage 131 performed by the difference reflector 112 in step S54 may be detected by a separate functional unit such as a detector and the difference generator 121 may be informed of the detection. In this case, upon receiving the information from the detector, the difference generator 121 may acquire the pieces of page information from the data storage 131 and the comparison storage 132.

Step S60

The difference generator 121 compares the page information acquired from the data storage 131 with the page information acquired from the comparison storage 132. As in processes of step S61, which will be described later, and step S39 in the sequence diagram illustrated in FIG. 4, the page information stored in the data storage 131 is already written over the page information stored in the comparison storage 132. Furthermore, in steps S53 and S54, the difference of the same page difference information is reflected in the pieces of page information stored in the data storage 131 and the comparison storage 132 by the difference reflector 112. Thus, the difference generator 121 determines here that the page information acquired from the data storage 131 has no difference from the page information acquired from comparison storage 132. The difference generator 121 thus does not generate page difference information from the pieces of page information acquired from the data storage 131 and the comparison storage 132.

Step S61

The difference generator 121 writes the page information acquired from the data storage 131 over the page information stored in the comparison storage 132. As described above, since the page information stored in the data storage 131 and the page information stored in the comparison storage 132 are the same, overwriting is not necessarily needed.

As described above, the difference reflector 112 a reflects the difference in the page information in the comparison storage 132 by the page difference information by which the difference is reflected in the page information in the data storage 131 instead of initializing the comparison storage 132. As a result, since the difference generator 121 determines that the page information acquired from the data storage 131 has no difference from the page information acquired from the comparison storage 132, the difference generator 121 does not transmit the page difference information to the outside (another data sharing device). As a result, similarly to the first embodiment, occurrence of a loop in which the page difference information is transferred to the source data sharing device can be suppressed, and degradation in the performances of the data sharing devices 10 a and 20 a and the network 1 can be suppressed. Furthermore, the difference generator 121 need not be configured to determine that there is no difference in the page information acquired from the data storage 131 when the page information acquired from the comparison storage 132 is initialized information as in the first embodiment. Thus, the difference generator 121 may determine whether or not there is a difference through a normal comparison operation, which can simplify the implementation of processes.

Second Embodiment

A data sharing system 500 b and data sharing devices 10 b and 20 b according to the present embodiment will be described mainly on the configuration and operation different from those of the data sharing system 500 and the data sharing devices 10 and 20 according to the first embodiment.

FIG. 7 is a diagram illustrating an example of an overall configuration of a data sharing system according to the second embodiment. With reference to FIG. 7, the overall configuration of the data sharing system 500 b and hardware configurations of data sharing devices 10 a, 20 a will be described.

As illustrated in FIG. 7, the data sharing system 500 b includes the data sharing device 10 b and the data sharing device 20 b. The data sharing device 10 b and the data sharing device 20 b are connected via a network 1.

Although two data sharing devices 10 b and 20 b are illustrated as the data sharing devices connected via the network 1 in FIG. 7, the number of data sharing devices is not limited thereto, and three or more data sharing devices may be connected.

The data sharing device 10 b is a device to transfer information containing a change in an image displayed on a display thereof to another data sharing device (the data sharing device 20 b in FIG. 7) when such a change is caused. The data sharing device 10 b includes a communication interface 11 b, a CPU 12 b, a RAM 13 b, a HDD 14 b, a display device 15 b, and an input device 16 b. The above devices are connected via a bus in a manner capable of communicating with one another.

The communication interface 11 b is an interface based on a protocol such as TCP/IP for communication with the data sharing device 20 b via the network 1 such as a LAN. When the communication interface 11 b transmits or receives data to/from the data sharing device 20 b, for example, the communication interface 11 b adds or removes TCP and IP headers to/from the data. The communication interface 11 b is constituted by a communication unit such as an NIC, for example.

The CPU 12 b controls overall operation of the data sharing device 10 b.

The RAM 13 b is a device to store various programs including screen transfer applications and other graphical user interface (GUI) applications executed at the data sharing device 10 b, data used for various processes carried out at the data sharing device 10 b, and the like. The screen transfer applications and the like are executed by the CPU 12 b on an OS expanded on the RAM 13 b.

The HDD 14 b is an external storage device to accumulate and store the OS, programs, data, and the like. Note that the HDD 14 b is not limited to a HDD that is an external storage device, but may be realized by a storage device such as a SSD, an optical disk, or a magneto-optical disk (MO), for example.

The display device 15 b is a device to display various images generated by the screen transfer applications or GUI applications. The display device 15 b is constituted by a CRT display, a liquid crystal display, a plasma display, an organic EL display, or the like, for example.

The input device 16 b is a device to which operations are input by a user for causing the CPU 12 b to execute predetermined processes. The input device 16 b is constituted by operation input functions such as a mouse, a keyboard, a numeric key pad, a touch pad, or a touch panel.

The data sharing device 20 b is a device having the same functions as the data sharing device 10 b. The data sharing device 20 b includes a communication interface 21 b, a CPU 22 b, a RAM 23 b, a HDD 24 b, a display device 25 b, and an input device 26 b. The above devices are connected via a bus in a manner capable of communicating with one another. The communication interface 21 b, the CPU 22 b, the RAM 23 b, the HDD 24 b, the display device 25 b, and the input device 26 b have the same functions as those of the communication interface 11 b, the CPU 12 b, the RAM 13 b, the HDD 14 b, the display device 15 b, and the input device 16 b, respectively, of the data sharing device 10 b.

FIG. 8 is a diagram illustrating an example of a block configuration of a data sharing device according to the second embodiment. With reference to FIG. 8, the block configuration of the data sharing devices 10 b and 20 b will be described.

As illustrated in FIG. 8, the data sharing device 10 b includes a change generator 101 b (change generator), a change reflector 102 b (change reflector), a difference reflector 111 b (difference receiver), a difference reflector 112 b (difference reflector), a difference generator 121 b (difference generator), a difference transmitter 122 b (difference transmitter), a data storage 131 b (first storage), a comparison storage 132 b (second storage), an image controller 161 b, and a display 162 b.

The change generator 101 b is a functional unit to generate image change information (change information) that is information indicating a change made on image information on which an image displayed on the display device 15 b is based when the image information is changed by an operation of the input device 16 b performed by the user, for example. The change generator 101 b is implemented by a program executed by the CPU 12 b illustrated in FIG. 7.

The change reflector 102 b is a functional unit to reflect a change indicated by image change information received from the change generator 101 b in image information (first information) which is stored in the data storage 131 b and on which an image displayed on the display device 15 b is based. The change reflector 102 b is implemented by a program executed by the CPU 12 b illustrated in FIG. 7.

The difference reflector 111 b is a functional unit to receive a packet containing image difference information (second difference information) and header information added thereto from another data sharing device (the data sharing device 20 b, for example) via the network 1. Note that image difference information is information indicating a difference extracted by comparing two pieces of image information by the difference generator 121 b as will be described later. The difference reflector 111 b is realized by the communication interface 11 b illustrated in FIG. 7.

The difference reflector 112 b is a functional unit to initialize information (second information) stored in the comparison storage 132 b, and reflect a difference indicated by image difference information received from the difference reflector 111 b in image information which is stored in the data storage 131 b and on which an image displayed on the display device 15 b is based. The difference reflector 112 b is implemented by a program executed by the CPU 12 b illustrated in FIG. 7.

The difference generator 121 b is a functional unit to acquire image information in which a change is reflected from the data storage 131 b when reflection of the change in image information in the data storage 131 b by the change reflector 102 b or reflection of the difference in image information in the data storage 131 b by the difference reflector 112 b is detected, acquire image information (corresponding to initialized information) stored in the comparison storage 132 b, compare the two pieces of image information, and extract a difference therebetween as image difference information (first difference information). The difference generator 121 b is implemented by a program executed by the CPU 12 b illustrated in FIG. 7.

The difference transmitter 122 b is a functional unit to transmit a packet containing image difference information received from the difference generator 121 b and header information added thereto to another data sharing device (the data sharing device 20 b) via the network 1. The difference transmitter 122 b is realized by the communication interface 11 b illustrated in FIG. 7.

The data storage 131 b is a functional unit to store image information of an image displayed on the display device 15 b. The data storage 131 b is realized by the RAM 13 b illustrated in FIG. 7.

The comparison storage 132 b is a functional unit to temporarily store image information stored in the data storage 131 b in a state before being changed by image change information from the change reflector 102 b or image difference information from the difference reflector 112 b. The comparison storage 132 b is realized by the RAM 13 b illustrated in FIG. 7.

The image controller 161 b is a functional unit to send image information acquired from the data storage 131 b to the display 162. The image controller 161 b is implemented by a program executed by the CPU 12 b illustrated in FIG. 7.

The display 162 b is a functional unit to display an image based on image information received from the image controller 161 b. The display 162 b is realized by the display device 15 b illustrated in FIG. 7.

Note that the data storage 131 b and the comparison storage 132 b may be realized by storage devices such as frame buffers different from the RAM 13 b.

Furthermore, the data sharing device 20 b also has the block configuration illustrated in FIG. 8 similarly to the data sharing device 10 b.

Furthermore, the change generator 101 b, the change reflector 102 b, the difference reflector 112 b, the difference generator 121 b, and the image controller 161 b described above may be realized by hardware circuits instead of programs that are software.

Furthermore, the change generator 101 b, the change reflector 102 b, the difference reflector 111 b, the difference reflector 112 b, the difference generator 121 b, the difference transmitter 122 b, the data storage 131 b, the comparison storage 132 b, the image controller 161 b, and the display 162 b illustrated in FIG. 8 are conceptual representation of functions and are not limited to such a configuration.

FIG. 9 is a sequence diagram of operation when a screen is changed in a data sharing device. With reference to FIG. 9, operation when image information of a displayed image is changed in the data sharing device 10 b will be described.

Step S71

When image information on which an image displayed by the display 162 b is based is changed by an operation of the input device 16 b performed by the user, for example, the change generator 101 b of the data sharing device 10 b generates image change information that is information containing the change. Specifically, a change in image information refers to a change in display on a window displayed by the display 162 b such as an input of a character on an image displayed by the display 162 b, or disabling or enabling of a button display, for example. The change generator 101 b then sends the generated image change information to the change reflector 102 b of the data sharing device 10 b.

Step S72

The change reflector 102 b reflects the change indicated by the received image change information in the image information which is stored in the data storage 131 b and on which the image displayed by the display 162 b is based.

Step S73

The image controller 161 b of the data sharing device 10 b acquires the image information in which the change is reflected from the data storage 131 b.

Step S74

The image controller 161 b sends the image information to the display 162 b.

Step S75

The display 162 b displays an image on the basis of the received image information.

Step S76

When the reflection of the change in the image information in the data storage 131 b by the change reflector 102 b in step S72 is detected, the difference generator 121 b of the data sharing device 10 b acquires the image information in which the change is reflected from the data storage 131 b. In addition to acquiring the image information from the data storage 131 b, the difference generator 121 b also acquires the image information (corresponding to the image information before the reflection of the change in step S72) stored in the comparison storage 132 b. Note that the reflection of the change in the image information in the data storage 131 b performed by the change reflector 102 b in step S72 may be detected by a separate functional unit such as a detector and the difference generator 121 b may be informed of the detection. In this case, upon receiving the information from the detector, the difference generator 121 b may acquire the pieces of image information from the data storage 131 b and the comparison storage 132 b.

Step S77

When the image information acquired from the comparison storage 132 b is not initialized information, which will be described later, the difference generator 121 b extracts a difference of the image information acquired from the data storage 131 b from the image information acquired from the comparison storage 132 b as image difference information.

Step S78

The difference generator 121 b writes the image information acquired from the data storage 131 b over the image information stored in the comparison storage 132 b.

Step S79

The difference generator 121 b sends the extracted image difference information to the difference transmitter 122 b of the data sharing device 10 b.

Step S80

The difference transmitter 122 b transmits a packet containing the received image difference information and header information added thereto to another data sharing device (herein, the data sharing device 20 b) via the network 1.

As in the operation described above, when image information of an image displayed by the display 162 b is changed in the data sharing device 10 b, a difference from image information before being changed stored in the comparison storage 132 b is extracted by the difference generator 121 b, and image difference information that is information on the difference is transmitted to another data sharing device (herein, the data sharing device 20 b). The data sharing device 20 b in receipt of the image difference information reflects the difference indicated by the image difference information in the image information of the image displayed by the display 162 b of the data sharing device 20 b and causes the display 162 b to display an image based on the image information in which the difference is reflected according to the operation described later with reference to FIG. 10. As a result, the data sharing device 10 b and the data sharing device 20 b share the same image information, and can thus make the images displayed thereon to be the same.

FIG. 10 is a sequence diagram of operation when image difference information is received from outside. With reference to FIG. 10, operation when the data sharing device 10 b receives image difference information from outside (the data sharing device 20 b) will be described.

Step S91

The difference reflector 111 b of the data sharing device 10 b receives a packet containing page difference information from another data sharing device (the data sharing device 20 b, for example) via the network 1. Note that a difference contained in the image difference information refers to a change in display on a window displayed by the display 162 b such as an input of a character on an image displayed by the display 162 b, or disabling or enabling of a button display, for example, similarly to the change in image information described above.

Step S92

The difference reflector 111 b sends the image difference information obtained by removing header information from the received packet to the difference reflector 112 b of the data sharing device 10 b.

Step S93

The difference reflector 112 b initializes information stored in the comparison storage 132 b. The difference reflector 112 b may perform the initialization by deleting image information stored in the comparison storage 132 b or may perform the initialization by overwriting predetermined initialization information, for example. Hereinafter, the information in the comparison storage 132 b resulting from the initialization by the difference reflector 112 b will be referred to as initialized information.

Step S94

The difference reflector 112 b reflects the difference indicated by the received image difference information in the image information which is stored in the data storage 131 b and on which the image displayed by the display 162 b is based.

Step S95

The image controller 161 b acquires the image information in which the difference is reflected from the data storage 131 b.

Step S96

The image controller 161 b sends the image information to the display 162 b.

Step S97

The display 162 b displays an image on the basis of the received image information.

Step S98

When the reflection of the difference in the image information in the data storage 131 b by the difference reflector 112 b in step S94 is detected, the difference generator 121 b acquires the image information in which the difference is reflected from the data storage 131 b. In addition to acquiring the image information from the data storage 131 b, the difference generator 121 b also acquires the image information (corresponding to the initialized information) stored in the comparison storage 132 b. Note that the reflection of the difference in the image information in the data storage 131 b performed by the difference reflector 112 b in step S94 may be detected by a separate functional unit such as a detector and the difference generator 121 b may be informed of the detection. In this case, upon receiving the information from the detector, the difference generator 121 b may acquire the pieces of image information from the data storage 131 b and the comparison storage 132 b.

Step S99

Since the image information acquired from the comparison storage 132 b is initialized information, the difference generator 121 b determines that there is no difference in the image information acquired from the data storage 131 b. The difference generator 121 b thus does not generate image difference information from the pieces of image information acquired from the data storage 131 b and the comparison storage 132 b.

Step S100

The difference generator 121 b writes the image information acquired from the data storage 131 b over the initialized information stored in the comparison storage 132 b.

As in the operation described above, when the data sharing device 10 b has received image difference information from outside (another data sharing device), the difference reflector 112 b initializes the comparison storage 132 b and reflects the difference indicated by the image difference information in the image information of the image displayed by the display 162 b, and displays an image based on the image information in which the difference is reflected on the display 162 b. Furthermore, when the comparison storage 132 b is initialized, the difference generator 121 b determines that there is no difference in the image information acquired from the data storage 131 b, does not generate image difference information, and does not transmit image difference information to outside (another data sharing device). Specifically, since another data sharing device that has transmitted image difference information to the data sharing device 10 b can be determined to already display the image based on the image information in which the difference indicated by the image difference information is reflected, the data sharing device 10 b does not newly transmit the image difference information with the same content to the another data sharing device. As a result, occurrence of a loop in which the image difference information is transferred to the source data sharing device can be suppressed, and degradation in the performances of the data sharing devices 10 b and 20 b and the network 1 can be suppressed.

Similarly to the data sharing devices 10 a and 20 a according to the modified example of the first embodiment, note that the difference reflector 112 b may reflect the difference indicated by the same image difference information in the pieces of image information stored in the data storage 131 b and the comparison storage 132 b instead of initializing the comparison storage 132 b. As a result, occurrence of a loop in which the image difference information is transferred to the source data sharing device can be suppressed, and degradation in the performances of the data sharing devices 10 b and 20 b and the network 1 can be suppressed. Furthermore, the difference generator 121 b need not be configured to determine that there is no difference in the image information acquired from the data storage 131 b when the image information acquired from the comparison storage 132 b is initialized information as in the second embodiment. Thus, the difference generator 121 b may determine whether or not there is a difference through a normal comparison operation, which can simplify the implementation of processes.

Although information displayed as an image on displays such as the page information in the first embodiment and the image information in the second embodiment is shared among multiple data sharing devices, shared information is not limited to displayed information. Thus, information that is not particularly intended to be displayed (such as data files or databases, for example) may be shared among multiple data sharing devices through the operations described above.

Programs to be executed by the CPU 12 of the data sharing device 10 (20) and the CPU 12 b of the data sharing device 10 b (20 b) in the embodiments described above are recorded on a computer readable recording medium such as a CD-ROM, a CD-R, a memory card, a digital versatile disk (DVD) or a flexible disk (FD) in a form of a file that can be installed or executed, and provided therefrom.

Alternatively, the programs to be executed by the CPU 12 of the data sharing device 10 (20) and the CPU 12 b of the data sharing device 10 b (20 b) in the embodiments described above may be stored on a computer system connected to a network such as the Internet, and provided by being downloaded via the network. Still alternatively, the programs to be executed by the CPU 12 of the data sharing device 10 (20) and the CPU 12 b of the data sharing device 10 b (20 b) in the embodiments described above may be provided or distributed through a network such as the Internet. Still alternatively, the programs to be executed by the CPU 12 of the data sharing device 10 (20) and the CPU 12 b of the data sharing device 10 b (20 b) in the embodiments described above may be embedded in a ROM or the like in advance and provided therefrom.

The programs to be executed by the CPU 12 of the data sharing device 10 (20) and the CPU 12 b of the data sharing device 10 b (20 b) in the embodiments described above have modular structures for implementing the functions to be executed by the CPU 12 and the CPU 12 b described above on a computer system. In an actual hardware configuration, the CPU 12, 12 b reads programs from a storage device (the RAM 13, 13 b) and executes the programs thereon, whereby the respective functions described above are implemented on a computer system.

While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions. 

What is claimed is:
 1. A data sharing device comprising: a first storage to store first information; a second storage to store second information that is a copy of the first information stored in the first storage; a processor for executing instructions stored in a memory, the instructions comprising: a difference generating instruction to compare, when the first information stored in the first storage is changed, the changed first information with the second information stored in the second storage, extract, if there is a difference between the changed first information and the second information, the difference, and generate first difference information indicating the difference; a difference transmitting instruction to transmit the first difference information to an external data sharing device; a difference receiving instruction to receive second difference information generated in the external data sharing device or another external data sharing device; and a difference reflecting instruction to reflect a difference indicated by the second difference information in the first information stored in the first storage, and cause the first difference generating instruction not to generate the first difference information when the difference indicated by the second difference information is reflected.
 2. The device according to claim 1, wherein when the second information stored in the second storage is initialized, the difference generating instruction does not generate the first difference information, and the difference reflecting instruction initializes the second information stored in the second storage before reflecting the difference indicated by the second difference information in the first information stored in the first storage.
 3. The device according to claim 1, wherein the difference reflecting instruction reflects the difference indicated by the second difference information in the first information stored in the first storage and the second information stored in the second storage.
 4. The device according to claim 1, further comprising: a change generating instruction to generate change information indicating a change made in the first information stored in the first storage; and a change reflecting instruction to reflect the change indicated by the change information in the first information stored in the first storage.
 5. The device according to claim 1, wherein when the difference generating instruction compares the changed first information with the second information, the difference generating instruction writes the changed first information over the second information stored in the second storage.
 6. The device according to claim 1, wherein the first information and the second information are page information of a web page.
 7. The device according to claim 1, wherein the first information and the second information are image information of a displayed image.
 8. A data sharing method for multiple data sharing devices that share information, the method comprising: generating including comparing, when first information stored in a first storage is changed, the changed first information with second information stored in a second storage, the second information being a copy of the first information, extracting, if there is a difference between the changed first information and the second information, the difference, and generating first difference information indicating the difference; transmitting the first difference information to an external data sharing device; receiving second difference information generated in the external data sharing device or another external data sharing device; and reflecting including reflecting a difference indicated by the second difference information in the first information stored in the first storage, and causing the first difference information not to be generated when the difference indicated by the second difference information is reflected.
 9. A non-transitory computer-readable medium containing computer-readable instructions, the instructions which when executed by a computer including a first storage to store first information, and a second storage to store second information that is a copy of the first information stored in the first storage, causing the computer to perform a method of: transmitting first difference information to an external device; receiving second difference information generated in the external device or another external data sharing device; comparing, when the first information stored in the first storage is changed, the changed first information with the second information stored in the second storage; extracting, if there is a difference between the changed first information and the second information, the difference; and generating the first difference information indicating the difference; and reflecting a difference indicated by the second difference information in the first information stored in the first storage, and causing the computer not to generate the first difference information when the difference indicated by the second difference information is reflected. 